// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	3/4/2014 10:27:44 PM				
// -----------------------------

#ifndef _Color_h
#define _Color_h

#include "Defines.h"

namespace Flow
{
	
	struct Color
	{
	
		/* Constants */
		static const Color White;
		static const Color Black;
		static const Color Grey;
		static const Color Red;
		static const Color Green;
		static const Color Blue;
		static const Color Cyan;
		static const Color Yellow;
		static const Color Magenta;
		static const Color LightGrey;
		static const Color LightRed;
		static const Color LightGreen;
		static const Color LightBlue;
		static const Color LightCyan;
		static const Color LightYellow;
		static const Color LightMagenta;
		static const Color DarkGrey;
		static const Color DarkRed;
		static const Color DarkGreen;
		static const Color DarkBlue;
		static const Color DarkCyan;
		static const Color DarkYellow;
		static const Color DarkMagenta;
	
		/* Datamembers */
		Float	r;
		Float	g;
		Float	b;
		Float	a;
	
		/* Constructors */
		Color();
		Color(Float r, Float g, Float b);
		Color(Float r, Float g, Float b, Float a);
		Color(UInt32 uColor);
	
		Color(const Color& refColor);
	
		Color& operator=(const Color& refColor);
	
		static Color	FromRGBA(UInt8 r, UInt8 g, UInt8 b, UInt8 a);
		static Color	Lerp(const Color& a, const Color& b, Float alpha);
	
	};

}

#endif